Querying databases for information can be cumbersome and complicated. Database entities, such as tables, may be related to other entities, such as other tables, in complicated ways. For example, if a user wants to query what products a customer has bought, one way of doing this would be to query a particular customer in a particular table, and then associate this information with corresponding customer products in another table.
The problem with such querying is that a myriad of unwanted results can be returned. For example, for a particular customer, product information can be returned that relates to not only sales (i.e. what products the customer has bought), but also other information specifying what products the customer has returned, ordered (but maybe not bought), browsed, inquired about, and so on. Sometimes such querying may be simple if a user provides enough information in a query, but at other times obtaining the intended query for a user may be difficult, especially when the user does not provide enough query information, or perhaps, does not even fully appreciate how to query for intended information in the first place. Thus, it would be advantageous to provide mechanisms to surmise intended user queries (and other database functionalities) in an efficient and accurate manner.